package com.nkzy.domain.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//统一返回结果类型类；类中有属性、方法
@Data //lombok插件，自动生成getter、setter、toString方法
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    //三个属性：状态码，提示信息，数据，都使用private表示对属性私有化，封装性
    //面向对象编程：封装性，继承性，多态性
    //构造方法的作用，创建对象
    //构造方法，无参构造，有参构造，默认无参构造，无参构造方法，有参构造方法称为方法的重载
    //方法重载：同一个类中，方法名，参数个数不同或参数类型不同
    //类是抽象的，是对现实世界的抽象，比如：用户，订单，商品，地址，权限，角色，权限角色关系，用户角色关系，用户权限关系，用户订单关系，用户地址关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限角色关系，用户权限
    //用类创建出的对象，称为对象，对象是具体的
    private Integer code;//状态码.,此处可以使用int类型，也可以使用Integer类型
    private String msg;//提示信息
    private Object data;//数据
    //Java数据类型：基本数据类型(简单数据类型)、引用数据类型(复杂数据类型)、
    //基本数据类型：int、long、boolean、char、float、double、byte、short
    //引用数据类型：String、数组、类、接口
    //引用类型的数据：一般都提供了一些方法：便于我们进行操作。手机
    //在定义类的属性时，尽量使用引用数据类型，尽量不要使用基本数据类型，因为基本数据类型，存储的是值，而引用数据类型，提供了很多方法，我们后续操作时可以直接使用
    //为后续操作方便，在类中可以编写几个静态的方法，方便使用
    //静态方法，不需要创建对象，直接使用类名.方法名()调用
    //这个成功的方法，一般用于保存、修改、删除
    public static Result success(){
        return new Result(200,"操作成功",null);
    }
    //静态方法；返回成功，并携带数据，用于查询
    public static Result success(Object data){
        return new Result(1,"操作成功",data);
    }
    //静态方法；返回失败，并携带提示信息
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}
